package com.mgq.algorithm.twotree;

/**
 * 二叉树的每个节点都有一个int权值,给定一棵二叉树,要求计算从根节点到所有叶节点的路径中权值和最大的值?
 */
public class MaxValue {

    private static Integer maxSum = Integer.MIN_VALUE;

    public static void maxValue(TreeNode node, int pre) {
        if (node.left == null && node.right == null) {
            //在叶节点计算权值和. 此时就是最大路径
            Math.max(maxSum, pre + node.val);
        }
        if (node.left != null) {
            maxValue(node.left, pre + node.val);
        }
        if (node.right != null) {
            maxValue(node.right, pre + node.val);
        }
    }

    public static int maxValue2(TreeNode node) {
        if (node.left == null && node.right == null) {
            return node.val;
        }
        int next = Integer.MIN_VALUE;
        if (node.left != null) {
            next = maxValue2(node.left);
        }
        if (node.right != null) {
            next = Math.max(next, maxValue2(node.right));
        }
        return node.val + next;
    }
}
